home *** CD-ROM | disk | FTP | other *** search
/ The Utilities Experience / The Utilities Experience - Volume 1.iso / software / demos / e-q / pndemo20c / rexx / mkpndir.rexx
Encoding:
OS/2 REXX Batch file  |  1993-03-17  |  3.9 KB  |  158 lines

  1. /* MKPNDIR -- updates ProNet Library index $VER: MKPNDIR 1.04
  2.    ©1992 J L Noble  Elven Systems  Boulder Creek CA           */
  3.  
  4. /* Somewhat modified by Jeff Lindstrom, Prolific, Inc.        */
  5.  
  6. LibName = ''
  7.  
  8. c0       = ''    /* so the colors can be swapped easier  */
  9. c1       = ''
  10. c2       = ''
  11. c3       = ''
  12. c4       = ''    /* This is a background color on 4 color Workbench */
  13. c5       = ''
  14. c6       = ''
  15. c7       = ''
  16.              
  17. ADDRESS COMMAND
  18.  
  19. SIGNAL ON Break_C
  20.  
  21. IF ~( EXISTS(PNDIR) & EXISTS(PNLIB) ) THEN
  22.  
  23.   DO
  24.     SAY ''
  25.     SAY "Can't find "c6"PNDIR"c1" and/or"c6" PNLIB"
  26.     SAY ''
  27.     EXIT
  28.   END
  29.  
  30. SAY ''
  31.  
  32. /* Save the date so we can trick list into giving us correct dates */
  33.  
  34. 'date >t:today'
  35. CALL OPEN('today','t:today','read')
  36. savdate = READLN('today')
  37. savdate = SUBWORD(savdate,2,1)
  38. CALL CLOSE('today')
  39. 'delete >nil: t:today'
  40.  
  41. SAY
  42.  
  43. OPTIONS PROMPT 'Enter Library to Update or 'c2'<Return>'c1' for ALL > '
  44. PULL LibName
  45.   
  46. LibName = LEFT(UPPER(LibName),3)
  47. SAY ''
  48.  
  49. SELECT
  50.   
  51.   WHEN (LibName = '   ') THEN LibName = 'ALL'
  52.   WHEN (LibName = 'ANA') THEN LibName = 'Analog'
  53.   WHEN (LibName = 'DIS') THEN LibName = 'Discrete'
  54.   WHEN (LibName = 'ECL') THEN LibName = 'ECL'
  55.   WHEN (LibName = 'MOS') THEN LibName = 'MOS'
  56.   WHEN (LibName = 'MTT') THEN LibName = 'MTTL'
  57.   WHEN (LibName = 'SCH') THEN LibName = 'Schem'
  58.   WHEN (LibName = 'SYM') THEN LibName = 'Symbol'
  59.   WHEN (LibName = 'TTL') THEN LibName = 'TTL'
  60.   WHEN (LibName = 'USE') THEN LibName = 'User'
  61.   WHEN (LibName = 'VLS') THEN LibName = 'VLSI'
  62.     
  63.   OTHERWISE
  64.     DO
  65.       SAY c6'Say What?'
  66.       SAY ''
  67.       EXIT
  68.     END
  69. END
  70.  
  71.   IF (LibName = 'ALL')|(LibName = 'Analog')   THEN CALL UpDIR(Analog)
  72.   IF (LibName = 'ALL')|(LibName = 'Discrete') THEN CALL UpDIR(Discrete)
  73.   IF (LibName = 'ALL')|(LibName = 'ECL')      THEN CALL UpDIR(ECL)
  74.   IF (LibName = 'ALL')|(LibName = 'MOS')      THEN CALL UpDIR(MOS)
  75.   IF (LibName = 'ALL')|(LibName = 'MTTL')     THEN CALL UpDIR(MTTL)
  76.   IF (LibName = 'ALL')|(LibName = 'Schem')    THEN CALL UpDIR(Schem)
  77.   IF (LibName = 'ALL')|(LibName = 'Symbol')   THEN CALL UpDIR(Symbol)
  78.   IF (LibName = 'ALL')|(LibName = 'TTL')      THEN CALL UpDIR(TTL)
  79.   IF (LibName = 'ALL')|(LibName = 'User')     THEN CALL UpDIR(User)
  80.   IF (LibName = 'ALL')|(LibName = 'VLSI')     THEN CALL UpDIR(VLSI)
  81.   
  82. SAY ''
  83. SAY c7'DONE'  
  84. SAY ''
  85.   
  86. EXIT
  87.  
  88.  
  89. UpDIR:
  90.   
  91. DO
  92.  
  93.   arg indir
  94.   
  95.   SAY c5'   'indir'A' 
  96.   
  97.   'date 1-jan-29'  /* cheat - set the date to jan 1, 2029 so we get good filedates */
  98.                    /* (note - change this line dec 31st 2028 :)  */
  99.   
  100.   'LIST TO t:foo PNLIB/'indir'/#? LFORMAT="%N %L %D"'
  101.   'LIST TO t:foosize t:foo LFORMAT="%L"'
  102.   CALL OPEN('SIZE','t:foosize','read')
  103.   size = READLN('SIZE')
  104.   status = c5'Updated'
  105.   CALL CLOSE('SIZE')
  106.   IF  ~(size = 'empty') THEN 'sort t:foo t:foo'
  107.     ELSE status = c5'Empty'
  108.   
  109.   'date 'savdate   /* restore the date so the directory has today's date */
  110.   
  111.   IF OPEN('DIR','t:foo','read')  THEN
  112.   DO
  113.     IF OPEN('OUT','t:bar','W') THEN
  114.     DO WHILE ~(EOF('DIR'))
  115.       list =  READLN('DIR')
  116.     
  117.       IF ~(list='') THEN
  118.       DO
  119.     
  120.         /* Omit the .M files in the PNLIB/Schem sub-directory */
  121.         IF ~( (indir = 'SCHEM') & (INDEX(SUBWORD(list,1,1), ".M") > 0) ) THEN
  122.         DO
  123.           CALL WRITELN('OUT',SUBWORD(list,1,1))          /* file name */
  124.           CALL WRITELN('OUT',LEFT(SUBWORD(list,2,1),7))  /* filesize - 7 char string */
  125.           CALL WRITELN('OUT',SUBWORD(list,3,1))          /* file date */
  126.         END
  127.       END
  128.     END
  129.     
  130.     CALL CLOSE('DIR')
  131.     CALL CLOSE('OUT')
  132.     
  133.    'copy t:bar PNDIR/'indir clone
  134.    'delete >nil: t:foo'
  135.    'delete >nil: t:bar'
  136.    'delete >nil: t:foosize'
  137.     SAY 'C'c1'-- 'status''
  138.   
  139.   END
  140. END
  141.   
  142. RETURN
  143.  
  144.  
  145.  
  146.  
  147. /* Hmmm ... wanna quit early, huh?  */
  148.  
  149. BREAK_C:
  150.  
  151. 'date 'savdate  /* make sure we're back in the present */
  152. SAY ' p'      /* turn the cursor back on */
  153. SAY 'B'center(c7'<<'c1' User Abort Requested 'c7'>>',60)
  154. SAY ''
  155. SAY ''
  156.  
  157. EXIT
  158.